intread(){ int x = 0; char c = getchar(); while(c<'0'||c>'9'){ c = getchar(); } while(c>='0'&&c<='9'){ x = x*10+c-'0'; c = getchar(); } return x; }
int n; constint maxt = 1e7+1e5; int t[maxt]; int ans[maxt];
intcheck(int x) { while (x>0) { if (x%10==7) returntrue; x /= 10; } returnfalse; } voidinit(){ for (int i=1;i<=1e7;i++) { if (!t[i]) if (check(i)) { t[i] = true; for (int j=i;j<=1e7;j+=i) t[j] = true; } } } intmain(){ n = read(); init(); int pre = 1; for (int i=1;i<=1e7+1e3;i++) { if (t[i]) { ans[i] = -1; continue; } if (i!=1) { ans[pre] = i; pre = i; } } for (int i=1;i<=n;i++) { int x = read(); printf("%d\n",ans[x]); } }
#include"bits/stdc++.h" #define int long long usingnamespace std;
intread(){ int x = 0; char c = getchar(); while(c<'0'||c>'9') { c = getchar(); } while(c>='0'&&c<='9') { x = x*10+c-'0'; c = getchar(); } return x; }
constint maxn = 35; constint maxm = 105; int n,m,k,V[maxm]; int f[maxm][maxm][maxm][maxm]; constint MOD = 998244353; int C[maxm][maxm]; int Vp[maxm][maxm]; int ans;
signedmain(){ n = read(); m = read(); k = read(); for (int i=0;i<=m;i++) V[i] = read(); for (int i=0;i<=m;i++) { Vp[i][0] = 1; for (int j=1;j<=n;j++) { Vp[i][j] = Vp[i][j-1]*V[i]%MOD; } } C[0][0] = 1; for (int i=1;i<=n;i++) { C[i][0] = 1; for (int j=1;j<=i;j++) C[i][j] = (C[i-1][j]+C[i-1][j-1])%MOD; } for (int i=0;i<=n;i++) { f[0][i][i/2][i%2] = Vp[0][i]*C[n][i]%MOD; } for (int i=0;i<m;i++) for (int j=0;j<=n;j++) { for (int p=0;p<=j/2;p++) for (int l=0;l<=min(i+1,j);l++) { if (!f[i][j][p][l]) continue; for (int t=j;t<=n;t++) { int q = t-j+p; f[i+1][t][q/2][l+q%2] += f[i][j][p][l]*Vp[i+1][t-j]%MOD*C[n-j][t-j]%MOD; f[i+1][t][q/2][l+q%2] %= MOD; } } } for (int p=0;p<=n;p++) for (int l=0;l<=m+1;l++) { int cnt = 0; int x = p; while (x) { if(x%2==1) cnt++; x /= 2; } if (l+cnt<=k) ans = (ans+f[m][n][p][l])%MOD; } printf("%lld\n",ans); }
#include"bits/stdc++.h" typedef long long ll; using namespace std;
const int inf = 2e9; const int maxn = 605; const int maxv = 605; int a[10000+5]; int b[10000+5]; int p[10000+5]; int n; int dp[maxv][maxn*maxv]; ll ans = 1e18;
int read() { int x = 0; char c = getchar(); while(c<'0'||c>'9') { c = getchar(); } while(c>='0'&&c<='9') { x = x*10+c-'0'; c = getchar(); } return x; }
signed main () { n = read(); int V = 0; for (int i=1;i<=n;i++) a[i] = read(); for (int i=0;i<n;i++) { b[i] = a[i+1]-a[i]; V = max(V,a[i]); } sort(b+1,b+n); for (int i=1;i<n;i++) p[i] = p[i-1]+b[i]; int cnt = 1; while (b[cnt]==0) cnt++; cnt--; for (int i=0;i+cnt<=n+1;i++) for (int v=0;v<=n*V;v++) dp[i][v] = inf; dp[0][0] = 0; for (int i=0;i+cnt+1<n;i++) for (int v=0;v<=n*V;v++) { if (dp[i][v]==inf) continue; // cout<<"i = "<<i<<" v = "<<v<<endl; int amt = cnt+i+1; // cout<<amt*b[amt]*b[amt]+2*b[amt]*v<<" "<<p[amt]*p[amt]<<endl; // cout<<dp[i][v]<<" "; if (max(v+p[amt],v+amt*b[amt])>600*600) continue; checkMin(dp[i+1][v+amt*b[amt]],dp[i][v]+amt*b[amt]*b[amt]+2*b[amt]*v); // cout<<dp[i][v]<<" "; checkMin(dp[i+1][v+p[amt]],dp[i][v]+p[amt]*p[amt]); } for (int v=1;v<=n*V;v++) { if (v>600*600) continue; if (dp[n-cnt-1][v]==inf) continue; dp[n-cnt-1][v] += a[1]*a[1]*n+2*a[1]*v; int val = dp[n-cnt-1][v]; // cout<<"v = "<<v<<endl; // cout<<"val = "<<val<<endl; ans = min(ans,(1ll*n*val-1ll*(v+a[1]*n)*(v+a[1]*n))); } printf("%lld\n",ans); }
全国青少年信息学奥林匹克联赛(National Olympiad in Informatics in
Provinces,简称NOIP)自1995年至2020年已举办25次。每年由中国计算机学会统一组织。
NOIP在同一时间、不同地点以各省市为单位由特派员组织。全国统一大纲、统一试卷。初、高中或其他中等专业学校的学生可报名参加联赛。联赛分初赛和复赛两个阶段。初赛考察通用和实用的计算机科学知识,以笔试形式进行。复赛为程序设计,须在计算机上调试完成。参加初赛者须达到一定分数线后才有资格参加复赛。联赛分普及组和提高组两个组别,难度不同,分别面向初中和高中阶段的学生。